package love.yuanmeng.guetcoalsystem.cotroller;

import com.baomidou.mybatisplus.extension.api.R;
import love.yuanmeng.guetcoalsystem.pojo.Prop;
import love.yuanmeng.guetcoalsystem.service.PropService;
import love.yuanmeng.guetcoalsystem.util.DataGridView;
import love.yuanmeng.guetcoalsystem.util.DateUtils;
import love.yuanmeng.guetcoalsystem.util.RandomUtils;
import love.yuanmeng.guetcoalsystem.util.ResultObj;
import love.yuanmeng.guetcoalsystem.vo.PropIdEnterIdVo;
import org.apache.ibatis.annotations.Param;
import love.yuanmeng.guetcoalsystem.vo.PropAndMessage;
import love.yuanmeng.guetcoalsystem.vo.PropAndPage;
import love.yuanmeng.guetcoalsystem.vo.PropAuditVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@Controller
@CrossOrigin
@RequestMapping("prop")
public class PropController {

    private PropService propService;

    public PropController(PropService propService) {
        this.propService = propService;
    }

    /**
     * 卖方挂牌
     *
     * @param data 实体类数据
     * @return SUCCESS表示成功，ERROR表示失败
     */
    @ResponseBody
    @PostMapping("addProp")
    public String addProp(@RequestBody Prop data) {
        return propService.addProp(data);
    }

    /**
     * 买方摘牌
     *
     * @param data 实体类ID
     * @return SUCCESS表示成功，ERROR表示失败
     */
    @ResponseBody
    @PostMapping("updateProp")
    public ResultObj updateProp(@RequestBody PropIdEnterIdVo data) {
        try {
            int i = propService.updateProp(data);
            if (i == 1) {
                return ResultObj.OPERATE_SUCCESS;
            } else {
                return ResultObj.OPERATE_ERROR;
            }
        } catch (Exception e) {
            e.printStackTrace();
            return ResultObj.OPERATE_ERROR;
        }

    }

    /**
     * 查询所有牌子，但只查询状态=在挂，或者=被摘
     * status=0（在挂），=1（被摘下）......
     *
     * @return
     */
    @ResponseBody
    @RequestMapping("/loadPropByStatus")
    public DataGridView loadPropByStatus() {
        return propService.loadPropByStatus();
    }

    @ResponseBody
    @GetMapping("/getProp")
    public DataGridView getProp(String id) {
        return propService.getPropById(id);
    }

    //////////////////////////////////////////////////////

    /**
     * 卖方查询牌子,根据用户id查询，包括在挂、被摘、售出、完成、下架的牌子
     * status=0（在挂），=1（被摘下）、=2售出、=3完成、=4下架的牌子
     *
     * @return
     */
    @ResponseBody
    @RequestMapping("/loadPropByStatusAndOrder")
    public DataGridView loadPropByStatusAndOrder(@Param("userid") String userid) {
        return propService.loadPropByStatusAndOrder(userid);
    }


    /**
     * 卖方挂牌
     *
     * @param data 实体类数据
     * @return SUCCESS表示成功，ERROR表示失败
     */
    @ResponseBody
    @PostMapping("/addPropAnduserid")
    public ResultObj addPropAnduserid(@RequestBody Prop data) {
        try {
            data.setCreateTime(RandomUtils.getTime());
            propService.addPropAnduserid(data);
            return ResultObj.ADD_SUCCESS;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return ResultObj.ADD_ERROR;
    }

    /**
     * 卖方下架牌子
     *
     * @param data 实体类数据
     * @return SUCCESS表示成功，ERROR表示失败
     */
    @ResponseBody
    @PostMapping("/downPropByUserid")
    public ResultObj downPropByUserid(@RequestBody Prop data) {
        System.out.println(data.getUserid());
        try {

            propService.updatePropStatus(data);
            return new ResultObj(200, "下架成功！");
        } catch (Exception e) {
            e.printStackTrace();
        }
        return new ResultObj(-1, "下架失败！");
    }


    /**
     * 卖方发货
     *
     * @param data 实体类数据
     * @return SUCCESS表示成功，ERROR表示失败
     */
    @ResponseBody
    @PostMapping("/updatePropCoalstatusByUserid")
    public ResultObj updatePropCoalstatusByUserid(@RequestBody Prop data) {
        System.out.println(data.getUserid());
        try {

            propService.updatePropCoalStatus(data);
            return ResultObj.OPERATE_SUCCESS;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return ResultObj.OPERATE_ERROR;
    }


    /**
     * 挂牌审核数据列表
     * @param currentPage
     * @param pageSize
     * @return
     */
    @ResponseBody
    @PostMapping("/getPropAuditVoList")
    public List<PropAuditVo> getPropAuditVoList(@RequestParam int currentPage, @RequestParam int pageSize,@RequestBody PropAndPage propAndPage){
        propAndPage.setOffset((currentPage-1)*pageSize);
        propAndPage.setLimit(pageSize);
        return propService.getPropAuditVoList(propAndPage);
    }


    @ResponseBody
    @RequestMapping("/approvedProp")
    public ResultObj approvedProp(@RequestBody PropAndMessage propAndMessage) {
        boolean b = propService.approvedProp(propAndMessage.getProp(), propAndMessage.getMessage());
        return b?ResultObj.UPDATE_SUCCESS:ResultObj.UPDATE_ERROR;
    }






}
